/*******************************************************************************
 * Copyright (c) 2005, 2007 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
/**
 * 
 */
package us.gaaoc.framework.dao;

import java.util.List;

import org.hibernate.Session;
import org.springframework.beans.factory.annotation.Autowire;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import us.gaaoc.framework.model.CaseRecordAction;
import us.gaaoc.framework.model.VisualMarkCategory;


/**
 * @author robinsom
 * 
 */
@SuppressWarnings("unused")
@Configurable(dependencyCheck=true,autowire=Autowire.BY_TYPE)
@Scope("prototype")
@Component
public abstract class DAOFactory  {

	//public static final DAOFactory EJB3_PERSISTENCE = new org.hibernate.ce.auction.dao.ejb3.EJB3DAOFactory();

	public static final HibernateDAOFactory HIBERNATE = new us.gaaoc.framework.dao.HibernateDAOFactory();

	public static final DAOFactory DEFAULT = HIBERNATE;

	// Add your DAO interfaces here
	public abstract CaseRecordHistoryDAO getCaseRecordHistoryDAO();
	public abstract CaseRecordDAO getCaseRecordDAO(String courtUuid);
	public abstract CourtDAO getCourtDAO();
	public abstract DocumentsDAO getDocumentsDAO();
	public abstract FilingSearchDAO getFilingSearchDAO();
	public abstract NotificationsDAO getNotificationsDAO();
	public abstract OrganizationsDAO getOrganizationsDAO();
	public abstract PersonParticipantsDAO getPersonParticipantsDAO();
	public abstract OrgParticipantsDAO getOrgParticipantsDAO();
	public abstract PersonDAO getPersonDAO();
	public abstract PublicNotificationsDAO getPublicNotificationsDAO();
	public abstract RolesDAO getRolesDAO();
	public abstract ProfileDAO getProfileDAO();
	public abstract CourtEventsDAO getCourtEventsDAO();
	public abstract CourtHearingNegotiationsDAO getCourtHearingNegotiationsDAO();	
	public abstract PersonAddressDAO getPersonAddressDAO();
	public abstract OrganizationAddressDAO getOrganizationAddressDAO();
	public abstract AttorneyDAO getAttorneyDAO();
	public abstract JudgeDAO getJudgeDAO();
	public abstract SheriffDAO getSheriffDAO();
	public abstract CourtHearingNegotiationStatusDAO getCourtHearingNegotiationStatusDAO();
	public abstract CaseRecordEventTypeDAO getCaseRecordEventTypeDAO();
	public abstract CaseRecordStatusDAO getCaseRecordStatusDAO();
	public abstract ParticipantRelationshipDAO getParticipantRelationshipDAO();
	public abstract AddressTypeDAO getAddressTypeDAO();
	public abstract CourtEventTypeDAO getCourtEventTypeDAO();
	public abstract DocumentTypeDAO getDocumentTypeDAO();
	public abstract FilingAuditDAO getFilingAuditDAO();
	public abstract SignaturesDAO getSignaturesDAO();
	public abstract DocumentStatusDAO getDocumentStatusDAO();
	public abstract CourtSealDAO getCourtSealDAO();
	public abstract CounterDAO getCounterDAO();
	public abstract CounterPerSignerDAO getCounterPerSignerDAO();
	public abstract CaseRecordTypeDAO getCaseRecordTypeDAO();
	//
	public abstract DocumentSigConfigDAO getDocumentSigConfigDAO();
	public abstract ExternalCaseRecordToCaseRecordDAO getExternalCaseRecordToCaseRecordDAO();
	public abstract LegalPreparerDAO getLegalPreparerDAO();
	//
	public abstract LdapDirectoryPersonDAO getLdapDirectoryPersonDAO();
	//
	public abstract DocumentPackageDAO getDocumentPackageDAO();
	//
	public abstract DocPageRangeDAO getDocPageRangeDAO();
	
	public abstract DocumentInstanceDAO getDocumentInstanceDAO();
	public abstract DocumentCategoryDAO getDocumentCategoryDAO();
	public abstract DocumentLocalCodeDAO getDocumentLocalCodeDAO();
	
	public abstract LocalCaseTypeDAO getLocalCaseTypeDAO();
	public abstract LocalCaseFilingTypeDAO getLocalCaseFilingTypeDAO();
	public abstract LocalCaseCategoryDAO getLocalCaseCategoryDAO();
	public abstract LocalCaseDivisionDAO getLocalCaseDivisionDAO();
	
	public abstract LocalCourtEventTypeDAO getLocalCourtEventTypeDAO();
	public abstract LocalParticipantRelationshipDAO getLocalParicipantRelationshipDAO();
	public abstract CaseRecordExternalCaseRecordNumberDAO getCaseRecordExternalCaseRecordNumberDAO();
	public abstract PersonHashedSSNDAO getPersonHashedSSNDAO();
	/**
	 * @return
	 */
	public abstract AddressDAO getAddressDAO();
	/**
	 * @return
	 */
	public abstract AddressCategoryDAO getAddressCategoryDAO();
	/**
	 * @return
	 */
	public abstract VisualMarkDAO getVisualMarkDAO();
	/**
	 * @return
	 */
	public abstract VisualMarkCategoryDAO getVisualMarkCategoryDAO();
	
	public abstract LdapDirectoryOrganizationDAO getLdapDirectoryOrganizationDAO();
	public abstract DocumentBinariesDAO getDocumentBinariesDAO();
	public abstract PersonOrganizationsDAO getPersonOrganizationsDAO();
	public abstract CaseRecordActionDAO getCaseRecordActionDAO();
	
	
	public abstract SignatureImageDAO getSignatureImageDAO();

	
}
